import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 5000
})

// request interceptor
service.interceptors.request.use(
  config => {
    // console.log(store.getters.token)
    if (store.getters.token) {
      config.headers['X-Token'] = getToken()
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

service.interceptors.response.use(
  response => {
    if (response.status == 200) {
      return Promise.resolve(response.data.data)
    } else {
      switch (response.status) {
        case 501:
          Message({
            message: '服务器不支持请求的功能，无法完成请求',
            type: 'error',
            duration: 5 * 1000
          })
          break
        case 502:
          Message({
            message:
              '作为网关或者代理工作的服务器尝试执行请求时，从远程服务器接收到了一个无效的响应',
            type: 'error',
            duration: 5 * 1000
          })
          break
        case 503:
          Message({
            message: '由于超载或系统维护，服务器暂时的无法处理客户端的请求。',
            type: 'error',
            duration: 5 * 1000
          })
          break
        case 504:
          Message({
            message: '充当网关或代理的服务器，未及时从远端服务器获取请求',
            type: 'error',
            duration: 5 * 1000
          })
          break
        case 505:
          Message({
            message: '服务器不支持请求的HTTP协议的版本，无法完成处理。',
            type: 'error',
            duration: 5 * 1000
          })
          break
        case 400:
          Message({
            message: '客户端请求的语法错误，服务器无法理解。',
            type: 'error',
            duration: 5 * 1000
          })
          break
        case 401:
          Message({
            message: '请求要求用户的身份认证。',
            type: 'error',
            duration: 5 * 1000
          })
          break
        case 402:
          Message({
            message: '保留，将来使用。',
            type: 'error',
            duration: 5 * 1000
          })
          break
        case 403:
          Message({
            message: '服务器理解请求客户端的请求，但是拒绝执行此请求。',
            type: 'error',
            duration: 5 * 1000
          })
          break
        case 404:
          Message({
            message: '服务器无法根据客户端的请求找到资源（网页）。',
            type: 'error',
            duration: 5 * 1000
          })
          break
        case 405:
          Message({
            message: '客户端请求中的方法被禁止。',
            type: 'error',
            duration: 5 * 1000
          })
          break
        default:
          break
      }
      return Promise.reject(response.data)
    }
  },
  error => {
    Message({
      message: error.message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)

export default service
